﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EntityTypes;
using System.Data.Objects;
using System.Data.Objects.DataClasses;

namespace SI2_TrabalhoFinal
{
    public partial class ListarConsultas : Form
    {
        SI2FinalEntities entities = Connection.entities;

        public ListarConsultas()
        {
            InitializeComponent();
        }

        private void ListarConsultas_Load(object sender, EventArgs e)
        {
            var queryMedico = from m in entities.Pessoa.Include("Medico").Where(m => m.Medico.Count != 0)
                              select m;            
            try
            {
                this.MedicoListarConsultas.DisplayMember = "Nome";
                this.MedicoListarConsultas.DataSource = ((ObjectQuery)queryMedico).Execute(MergeOption.AppendOnly);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void MedicoListarConsultas_SelectedIndexChanged(object sender, EventArgs e)
        {
            Pessoa p = (Pessoa)this.MedicoListarConsultas.SelectedItem;
            
            var queryEspecialidade = from medico in entities.Medico
                                     where medico.IdPessoa==p.NumeroSS
                                     from especialidade in entities.Especialidade
                                     from m in especialidade.Medico
                                     where m.LicencaMedica ==medico.LicencaMedica
                                     select especialidade;

            this.EspecialidadeListarConsultas.DisplayMember = "Nome";
            this.EspecialidadeListarConsultas.DataSource = ((ObjectQuery)queryEspecialidade).Execute(MergeOption.AppendOnly);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (this.MedicoListarConsultas.SelectedItem == null)
            {
                MessageBox.Show("Médico Inválido");
                return;
            }
            if (this.EspecialidadeListarConsultas.SelectedItem == null)
            {
                MessageBox.Show("Especialidade Inválida");
                return;
            }
            if(dateTimePicker1.Value <= DateTime.Now)
            {
                MessageBox.Show("Data Inválida");
                return;
            }

            
            var query = from medico in entities.Medico
                        where medico.IdPessoa == ((Pessoa)this.MedicoListarConsultas.SelectedItem).NumeroSS
                        from consulta in entities.Consulta
                        where consulta.Especialidade.IdEspecialidade == ((Especialidade)this.EspecialidadeListarConsultas.SelectedItem).IdEspecialidade &&
                        consulta.Medico.LicencaMedica == medico.LicencaMedica &&
                        dateTimePicker1.Value.Date== consulta.Data
                        select new {consulta.Paciente.Pessoa.Nome,consulta.MotivoConsulta1.Descricao};
                       
            dataGridView1.DataSource = query;
        }

    }
}
